﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;



int main()
{
	int a = 10;
	int& ra = a;
	ra = 20;
	int* pa = &a;
	*pa = 20;
	return 0;
}





//int main()
//{
//	int a = 10;
//	int& ra = a;
//	cout << "&a = " << &a << endl;
//	cout << "&ra = " << &ra << endl;
//	return 0;
//}




//int& Add(int a, int b)
//{
//	int c = a + b;
//	return c;
//}
//int main()
//{
//	int& ret = Add(1, 2);
//	cout << "Add(1, 2) is :" << ret << endl;
//	cout << "Add(1, 2) is :" << ret << endl;
//	Add(3, 4);
//	cout << "Add(3, 4) is :" << ret << endl;
//
//	return 0;
//}





//int& Count()
//{
//	static int n = 0;
//	n++;
//
//	return n;
//}
//int& Count1()
//{
//	int n = 0;
//	n++;
//
//	return n;
//}
//
//int main()
//{
//	int& ret = Count();
//	int& ret1 = Count1();//err
//
//	return 0;
//}


//void sawp(int* a ,int* b)
//{
//	int tmp = *a;
//	*a = *b;
//	*b = tmp;
//}
//
//void sawp(int& a, int& b)
//{
//	int tmp = a;
//	a = b;
//	b = tmp;
//}
//
//
//
//int Count()
//{
//	int n = 0;
//	n++;
//
//	return n;
//}
//
//void f3()
//{
//	const int& ret = Count();
//		 int& ret1 = Count();
//
//	int a = 1;
//	int& b = a;
//	// 指针和引用 权限可以缩小，但是不能放大
//
//	// 权限放大
//	//const int c = 2;
//	//int& d = c;
//
//	//const int* p1 = NULL;
//	//int* p2 = p1;
//
//	// 权限保持
//	const int c = 2;
//	const int& d = c;
//
//	const int* p1 = NULL;
//	const int* p2 = p1;
//
//	// 权限缩小
//	int x = 1;
//	const int& y = x;
//
//	int* p3 = NULL;
//	const int* p4 = p3;
//
//	 
//	const int m = 1;
//	int n = m;
//
////	const int& ret = Count();
//
//	int i = 10;
//
//		  double& rd = i;
//	const double& rd = i;
//
//	cout << (double)i << endl;
//
//	double dd = i;
//}
//
//
//
//
//
//
//void f2()
//{
//	int a = 10;
//	// int& ra;  // 该条语句编译时会出错,没有初始化
//	int& ra = a;
//	int& rra = a;
//	printf("%p\n%p\n%p\n", &a, &ra, &rra);
//}
//
//void f1()
//{
//	int a = 10;
//
//	//类型& 引用变量名(对象名) = 引用实体；
//	int& ra = a;//<====定义引用类型
//
//	printf("%p\n", &a);
//	printf("%p\n", &ra);
//}
//
//int main()
//{
//	//f2();
//	//f1();
//	return 0;
//}



//int main()
//{
//	//const int a = 1;
//	//a = 2;
//	const int m = 1;
//	int n = m;
//
//	return 0;
//}